/*
 * BuscarProducto.java
 *
 * Created on 14 de febrero de 2005, 08:28 AM
 */

package administrador;
import java.sql.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import javax.swing.table.*;


/**
 *
 * @author  User
 */
public class BuscadorProducto extends javax.swing.JFrame {
    javax.swing.JTable tabla;
    JScrollPane js;
    Conexion conexion;
    Facturacion factPrin;
    Productos proPrin;
    Vent_Combos combPrin;
    KardexInOut kardexPrin;
    Vent_histPro hisProPrin;
    ProductosInventario pInvPrin;
    NotaCD nCDPrin;
    Nota_de_Venta notaVenta;
    reportesProductos repPro;
    String ventana;
  
    int bodega;
    String txt_bodega="";
    String txt_cantidad="";
    
    /** Variaciones del Buscador de Productos para las ventanas */
    
    public BuscadorProducto(Conexion cEnt,int bEnt) {
        bodega=bEnt;
        conexion=cEnt;
        initComponents();
        configuroVentana();
        muestra();




    }
    
   
    
     public BuscadorProducto(Conexion cEnt,Facturacion venEnt,int bEnt) {
        bodega=bEnt;
        factPrin=venEnt;
        conexion=cEnt;
        configuroVentana();
        ventana="Facturacion";
        muestra();
    }
     public BuscadorProducto(Conexion cEnt,Nota_de_Venta notaVenta,int bEnt) {
        bodega=bEnt;
        this.notaVenta=notaVenta;
        conexion=cEnt;
        configuroVentana();
        ventana="Nota_de_Venta";
        muestra();
    }
    public BuscadorProducto(Conexion cEnt,NotaCD venEnt,int bEnt) {
        bodega=bEnt;
        nCDPrin=venEnt;
        conexion=cEnt;
        configuroVentana();
        ventana="NotaCD";
        muestra();
    }
     
     
     public BuscadorProducto(Conexion cEnt,Productos venEnt,int bEnt) {
        bodega=bEnt; 
        proPrin=venEnt;
        conexion=cEnt;
        configuroVentana();
        ventana="Producto";
          muestra();
    }
     
     public BuscadorProducto(Conexion cEnt,Vent_Combos venEnt,int acceso,int bEnt) {
        bodega=bEnt;
       if(acceso==1)  {
        combPrin=venEnt;
        conexion=cEnt;
        configuroVentana();
        ventana="Combos1";
       }
        
       if(acceso==2)  {
        combPrin=venEnt;
        conexion=cEnt;
        configuroVentana();
        ventana="Combos2";
        
       }
        muestra();
    }
     
     public BuscadorProducto(Conexion cEnt,KardexInOut venEnt,int bEnt) {
        bodega=bEnt;
        kardexPrin=venEnt;
        conexion=cEnt;
        configuroVentana();
        ventana="KardexInOut";
       muestra();
    }
     
     public BuscadorProducto(Conexion cEnt,reportesProductos repPro,int bEnt) {
        bodega=bEnt;
        this.repPro=repPro;
        conexion=cEnt;
        configuroVentana();
        ventana="ReportesProductos";
        muestra();
    }
     
     
     public BuscadorProducto(Conexion cEnt,Vent_histPro venEnt,int bEnt) {
        bodega=bEnt;
        hisProPrin=venEnt;
        conexion=cEnt;
        configuroVentana();
        ventana="Historia_Prod";
        muestra();
     }
     
    
              
     public BuscadorProducto(Conexion cEnt,String busca,Facturacion ventEnt,int bEnt) {
        bodega=bEnt;
        factPrin=ventEnt; 
        conexion=cEnt;
        configuroVentana();
        txt_buscar.setText(busca);
        muestraBusqueda(busca);
        muestroCategorias();
        muestra();
        
    }
     public BuscadorProducto(Conexion cEnt,String busca,Productos ventEnt,int bEnt) {
        bodega=bEnt;
        proPrin=ventEnt; 
        conexion=cEnt;
        configuroVentana();
        txt_buscar.setText(busca);
        muestraBusqueda(busca);
        muestroCategorias();
        muestra();
        
    }
     
     public BuscadorProducto(Conexion cEnt,ProductosInventario ventEnt,int bEnt) {
        bodega=bEnt;
        pInvPrin=ventEnt; 
        conexion=cEnt;
        configuroVentana();
        ventana="ProductosInventario";
        muestroCategorias();
        muestra();
        
    } 
     public void configuroVentana(){
        initComponents();
        this.setBounds(100,100,720,650);
        //this.setVisible(true);
        muestroCategorias();
        cb_bodega.setSelected(false);
        opcionBodega();
        muestra();
     }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

     public void reaparecer(){
     this.setVisible(true);

     }

    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        txt_buscar = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        cb_categoria = new javax.swing.JComboBox();
        cb_cantidad = new javax.swing.JCheckBox();
        cb_bodega = new javax.swing.JCheckBox();
        jLabel2 = new javax.swing.JLabel();
        txt_numero = new javax.swing.JLabel();
        cb_cerrar = new javax.swing.JCheckBox();

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Buscador", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(102, 102, 102))); // NOI18N
        jPanel1.setAutoscrolls(true);
        jPanel1.setLayout(null);

        txt_buscar.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 14));
        txt_buscar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txt_buscarKeyTyped(evt);
            }
        });
        jPanel1.add(txt_buscar);
        txt_buscar.setBounds(110, 20, 270, 30);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14));
        jLabel1.setForeground(new java.awt.Color(153, 0, 0));
        jLabel1.setText("BUSCAR:");
        jPanel1.add(jLabel1);
        jLabel1.setBounds(40, 20, 70, 30);

        jButton1.setText("MostrarTodos");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton1);
        jButton1.setBounds(390, 20, 100, 40);

        jPanel1.add(cb_categoria);
        cb_categoria.setBounds(500, 20, 140, 20);

        cb_cantidad.setText("Cant>0");
        cb_cantidad.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        cb_cantidad.setMargin(new java.awt.Insets(0, 0, 0, 0));
        cb_cantidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cb_cantidadActionPerformed(evt);
            }
        });
        jPanel1.add(cb_cantidad);
        cb_cantidad.setBounds(600, 50, 73, 15);

        cb_bodega.setText("Bodegas Todas");
        cb_bodega.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        cb_bodega.setMargin(new java.awt.Insets(0, 0, 0, 0));
        cb_bodega.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cb_bodegaActionPerformed(evt);
            }
        });
        jPanel1.add(cb_bodega);
        cb_bodega.setBounds(500, 50, 100, 15);

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel2.setForeground(new java.awt.Color(255, 102, 0));
        jLabel2.setText("Encontradas :");
        jPanel1.add(jLabel2);
        jLabel2.setBounds(520, 590, 100, 20);

        txt_numero.setFont(new java.awt.Font("Tahoma", 1, 14));
        jPanel1.add(txt_numero);
        txt_numero.setBounds(600, 590, 70, 20);

        cb_cerrar.setText("No Cerrar Ventana");
        cb_cerrar.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        cb_cerrar.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel1.add(cb_cerrar);
        cb_cerrar.setBounds(370, 590, 140, 20);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void cb_cantidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cb_cantidadActionPerformed
// TODO add your handling code here:
        opcionCantidadM();
    }//GEN-LAST:event_cb_cantidadActionPerformed
public void opcionCantidadM(){
        if(!cb_cantidad.isSelected()){
        txt_cantidad="";    
        }        
        else{
        txt_cantidad=" and i.cantidad>0 ";
        }
}
    private void cb_bodegaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cb_bodegaActionPerformed
// TODO add your handling code here:
       opcionBodega();

    }//GEN-LAST:event_cb_bodegaActionPerformed
public void opcionBodega(){
        if(cb_bodega.isSelected()){
        txt_bodega="";    
        }        
        else{
        txt_bodega=" and i.cod_bodega="+bodega+" ";
        }
}
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
        muestraTodos();
        
    }//GEN-LAST:event_jButton1ActionPerformed

    private void txt_buscarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txt_buscarKeyTyped
// Acciones del Enter en el cuadro de Texto
        int t=evt.getKeyChar();
        String parametro=txt_buscar.getText().toString();
        if(txt_buscar.getText().equals("")){
        parametro="%";
        }
        String itemBuscar="'"+parametro+"'";
        if(t==10){
           System.gc(); 
           muestraBusqueda(itemBuscar);
        }
    }//GEN-LAST:event_txt_buscarKeyTyped
   
    public void muestra(){
        String parametro=txt_buscar.getText().toString();
        if(txt_buscar.getText().equals("")){
        parametro="%";
        }
        String itemBuscar="'"+parametro+"'";
        
        muestraBusqueda(itemBuscar);
        
    }
    
    
    public int tomaNumero(){
       int fila=tabla.getSelectedRow();
    // System.out.println("La fila seleccionada es: "+fila);
       return fila;
    }
    
    public void muestraTodos(){
        //Toma la Categoria:
        int categoria=cb_categoria.getSelectedIndex();
        txt_buscar.setText("Mostrar Todos");
        ResultSet respuesta=null;
        //Segun Categoria o Muestra Todos los Productos.
        if(categoria!=0){
            respuesta=conexion.consultarBase("select p.cod_producto as 'Codigo',p.cod_categoria as 'Categoria',p.nombre,p.descripcion,i.cantidad as 'Cant',p.precio_normal as 'Precio' " +
                                             " from producto p,itm_bodega i where i.cod_producto=p.cod_producto and p.cod_categoria="+categoria+txt_bodega+txt_cantidad+" order by p.cod_producto;");
        }else{
            respuesta=conexion.consultarBase("select p.cod_producto as 'Codigo',p.cod_categoria as 'Categoria',p.nombre,p.descripcion,i.cantidad as 'Cant',p.precio_normal as 'Precio' " +
                                             " from producto p, itm_bodega i where i.cod_producto=p.cod_producto "+txt_bodega+txt_cantidad+" order by p.cod_producto;");
        }
     muestroTabla(respuesta);
     txt_numero.setText(String.valueOf(tabla.getRowCount()));
    }
        
    public void muestroTabla(ResultSet respuesta){
     //Obtengo Filas-Arreglo de Titulos de Columnas
        int filas=conexion.obtenerFilas(respuesta);
        String[] titulosCol=conexion.obtenerColumnas(respuesta);
        //Creo la tabla:
        CrearTabla(filas,titulosCol);
        llenaTabla(respuesta,titulosCol.length,filas);
    }
    
    public void muestroCategorias(){
     
     ResultSet r=conexion.consultarBase("select * from categoria");
     try{
            r.beforeFirst();
            cb_categoria.addItem("Todas Categorias");
            while(r.next()){
            String catS=r.getString(2);
            cb_categoria.addItem(catS);
            }
            
        }
       catch(SQLException sqle){
            System.out.println("Error al mostrar Bodegas");
            System.err.println(sqle);
        }
     
     
    }
    
    
    
    public void muestraBusqueda(String itemBuscar){
        
        String TablaCons="producto";
        ResultSet respuesta=null;
        
        //Saco codigo de la Categoria:
        int categoria=cb_categoria.getSelectedIndex();
        System.out.println("La categoria que saco es:"+categoria);
        
        
        String palabDesc[]=separaOraciones(itemBuscar);;
        
        String cons1="";
        String cons2="";
        String cons3="";
        String cons4="";
        
        for(int j=0;j<palabDesc.length;j++){
            
            if(palabDesc[j].equals("")||palabDesc[j].equals(" ")) {
                
            } else{
                
                System.out.println("la palabra es:"+palabDesc[j]);
                
                String fin=" ; ";
                if(palabDesc.length!=1){
                    fin=" union ";
                }
                
                if(palabDesc.length==j+1){
                    fin=" ; ";
                }
                
                System.out.println("Entra en el for:"+j+" |"+palabDesc.length+" veces."+fin);
                
                if(categoria==0){
                    cons1=cons1+"select p.cod_producto as 'Codigo',p.cod_categoria as 'Categoria',p.nombre,p.descripcion,i.cantidad as 'Cant',p.precio_normal as 'Precio' " +
                                " from producto p, itm_bodega i where p.cod_producto=i.cod_producto and ( lcase(p.cod_producto) like lcase('%"+palabDesc[j]+"%') or lcase(p.nombre) like lcase('%"+palabDesc[j]+"%') or p.precio_normal="+palabDesc[j]+" ) "+txt_bodega+txt_cantidad+fin;
                    cons2=cons2+"select p.cod_producto as 'Codigo',p.cod_categoria as 'Categoria',p.nombre,p.descripcion,i.cantidad as 'Cant',p.precio_normal as 'Precio' " +
                                " from producto p, itm_bodega i where p.cod_producto=i.cod_producto and ( lcase(p.cod_producto) like lcase('%"+palabDesc[j]+"%') or lcase(p.nombre) like lcase('%"+palabDesc[j]+"%' )) "+txt_bodega+txt_cantidad+fin;
                }
                if(categoria>0){
                    cons3=cons3+"select p.cod_producto as 'Codigo',p.cod_categoria as 'Categoria',p.nombre,p.descripcion,i.cantidad as 'Cant',p.precio_normal as 'Precio' " +
                                " from producto p, itm_bodega i where p.cod_producto=i.cod_producto and ( lcase(p.cod_producto) like lcase('%"+palabDesc[j]+"%') or lcase(p.nombre) like lcase('%"+palabDesc[j]+"%') or p.precio_normal="+palabDesc[j]+" ) and p.cod_categoria="+categoria+txt_bodega+txt_cantidad+fin;
                    cons4=cons4+"select p.cod_producto as 'Codigo',p.cod_categoria as 'Categoria',p.nombre,p.descripcion,i.cantidad as 'Cant',p.precio_normal as 'Precio' " +
                                " from producto p, itm_bodega i where p.cod_producto=i.cod_producto and ( lcase(p.cod_producto) like lcase('%"+palabDesc[j]+"%') or lcase(p.nombre) like lcase('%"+palabDesc[j]+"%')) and p.cod_categoria="+categoria+txt_bodega+txt_cantidad+fin;
                }
            }
        }
        
        
        
        
        if(TablaCons=="producto" && categoria==0){
            try{
                Integer.parseInt(itemBuscar);
                // respuesta=conexion.consultarBase("select * from producto  where ( lcase(cod_producto) like lcase('%"+itemBuscar+"%') or lcase(nombre) like lcase('%"+itemBuscar+"%') or stock_total="+itemBuscar+" or precio_normal="+itemBuscar+" ) ;");
                respuesta=conexion.consultarBase(cons1);
            } catch(java.lang.NumberFormatException e){
                //respuesta=conexion.consultarBase("select * from producto where ( lcase(cod_producto) like lcase('%"+itemBuscar+"%') or  lcase(nombre) like lcase('%"+itemBuscar+"%')) ;");
                respuesta=conexion.consultarBase(cons2);
            }
        }
        if(TablaCons=="producto" && categoria>0){
            //verifico si es un Numero:
            try{
                Integer.parseInt(itemBuscar);
                //respuesta=conexion.consultarBase("select * from producto  where ( lcase(cod_producto) like lcase('%"+itemBuscar+"%') or lcase(nombre) like lcase('%"+itemBuscar+"%') or stock_total="+itemBuscar+" or precio_normal="+itemBuscar+" ) and cod_categoria="+categoria+" ;");
                respuesta=conexion.consultarBase(cons3);
            } catch(java.lang.NumberFormatException e){
                //respuesta=conexion.consultarBase("select * from producto where ( lcase(cod_producto) like lcase('%"+itemBuscar+"%') or  lcase(nombre) like lcase('%"+itemBuscar+"%')) and cod_categoria="+categoria+";");
                respuesta=conexion.consultarBase(cons4);
            }
            
            
        }
        
        muestroTabla(respuesta);
        txt_numero.setText(String.valueOf(tabla.getRowCount()));
        
    }
    
    public void CrearTabla(int filas,String[] titulos){
        
        int columnas=titulos.length;
        String[][] tabla0=new String[filas][columnas];
       
        tabla= new JTable(tabla0,titulos);
        
        //Aqui le especifico para que la tabla acepte valores doubles e int:
        //--------------------------------------------------------------------
        final boolean[] canEdit = new boolean [columnas];
        for(int p=0;p<columnas;p++){
        canEdit[p]=false;
        }
        tabla.setModel(new javax.swing.table.DefaultTableModel(
            tabla0,titulos  
        ) {
           // boolean[] canEdit = new boolean [] { false, false, false, false};

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        //---------------------------------------------------------------------
                   
        //Le doy el evento del LCick del Mouse:
        tabla.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaMouseClicked(evt);
            }
        });
        
        //remuevo el JScroll para que no se monte cuando cree el nuevo:
        //*************************************************************
        try{
        jPanel1.remove(js);
        }catch(java.lang.NullPointerException e){}
        //*************************************************************
        
        //Pongo en la tabla:
            js = new JScrollPane(tabla);
                        
            js.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(198, 196, 196)));
            js.setBounds(20, 80, 670, 500);
            js.setVisible(true);
            jPanel1.add(js);
            js.updateUI();
       //Para que no puedan mover las Columnas:
        tabla.getTableHeader().setReorderingAllowed(false) ;
    }
    
     public void llenaTabla(ResultSet r,int columnas,int filas){
        try{
            r.beforeFirst();
            
            int j=0;
            while(r.next()) {
                
                for(int i=0;i<columnas;i++) {
                    
                    Object toma=r.getObject(i+1);
                    //System.out.println("toma valor:"+toma+" * fila:"+j+" * column:"+i);
                    try{
                        tabla.setValueAt(toma,j,i);
                    }catch(java.lang.ArrayStoreException e){
                        System.out.print("Errrrorrr");
                        tabla.setValueAt("null",j,i);
                    }
                }
                
                j++;
            }
        }catch(SQLException sqle){
            System.out.println("Error al mostrar los datos");
            System.err.println(sqle);
        }
        
    }
    
    
     private void tablaMouseClicked(java.awt.event.MouseEvent evt) {
    // Evento del click del mouse sobre la tabla:
         int fila=tabla.getSelectedRow();
         int cantidadProd=Integer.parseInt(tabla.getValueAt(fila,4).toString());
         System.out.println("Click en la Fila :"+fila+" cant="+cantidadProd+" vent"+ventana);
         
         
         
         if(ventana.equals("Facturacion")){
         int filaDesocupada=factPrin.cuentaFilaOcupadas();
         factPrin.ultimoLineDetalle=filaDesocupada;
         factPrin.tabla.setValueAt(tabla.getValueAt(tabla.getSelectedRow(),0),filaDesocupada,0);
         
             //Le Selecciono al Ultimo producto si es que no se repite en la factura:
             if (factPrin.siExisteCodigo(tabla.getValueAt(tabla.getSelectedRow(), 0), filaDesocupada) >= 0) {
             }else {
                 factPrin.tabla.clearSelection();
                 //Le selecciono y enfoco el nuevo producto:
                 factPrin.tabla.addRowSelectionInterval(filaDesocupada, filaDesocupada);
                 // scroll to the editing field
                 factPrin.tabla.scrollRectToVisible(tabla.getCellRect(filaDesocupada, 1, true));
             }
         }
         if(ventana.equals("Nota_de_Venta")){
         int filaDesocupada=notaVenta.cuentaFilaOcupadas();
         notaVenta.ultimoLineDetalle=filaDesocupada;
         notaVenta.tabla.setValueAt(tabla.getValueAt(tabla.getSelectedRow(),0),filaDesocupada,0);
         
            //Le Selecciono al Ultimo producto si es que no se repite en la factura:
             if (notaVenta.siExisteCodigo(tabla.getValueAt(tabla.getSelectedRow(), 0), filaDesocupada) >= 0) {
             }else {
             notaVenta.tabla.clearSelection();
             //Le selecciono y enfoco el nuevo producto:
             notaVenta.tabla.addRowSelectionInterval(filaDesocupada,filaDesocupada);
             // scroll to the editing field
             notaVenta.tabla.scrollRectToVisible(tabla.getCellRect(filaDesocupada, 1, true));
             }
         }
         if(ventana.equals("NotaCD")){
         //saco los codigos de los productos de la facturaRef    
         String codSelec=tabla.getValueAt(tabla.getSelectedRow(),0).toString();
         String tipoDoc=nCDPrin.txt_facRef.getText().substring(0, 1);
         String codigoP=nCDPrin.txt_facRef.getText().substring(1,nCDPrin.txt_facRef.getText().length() );
         
         //Comparo los codigos con los de la factura referida:
         ResultSet respuesta=conexion.consultarBase("SELECT cod_producto FROM dtl_pedido d, pedido p where d.cod_pedido=p.cod_pedido and p.tipo_comprobante like '"+tipoDoc+"' and p.cod_pedido="+codigoP+" and cod_producto like '"+codSelec+"' ;");
         int numResp=conexion.obtenerFilas(respuesta);
         if(numResp>0){
         int filaDesocupada=nCDPrin.cuentaFilaOcupadas();
         nCDPrin.tabla.setValueAt(tabla.getValueAt(tabla.getSelectedRow(),0),filaDesocupada,0);
         
          //Le Selecciono al Ultimo producto si es que no se repite en la factura:
             if ( nCDPrin.siExisteCodigo(tabla.getValueAt(tabla.getSelectedRow(), 0), filaDesocupada) >= 0) {
             }else {
             nCDPrin.tabla.clearSelection();
             //Le selecciono y enfoco el nuevo producto:
             nCDPrin.tabla.addRowSelectionInterval(filaDesocupada,filaDesocupada);
             // scroll to the editing field
             nCDPrin.tabla.scrollRectToVisible(tabla.getCellRect(filaDesocupada, 1, true));
             }
         this.txt_buscar.setText("");
         this.hide();
         }else{
         JOptionPane.showMessageDialog(this,"Este producto no se encuentra dentro de la factura Referida","Error",JOptionPane.ERROR_MESSAGE); 
         //Muestro los producto posibles:
         
        respuesta=conexion.consultarBase("select o.cod_producto,o.cod_categoria,o.nombre,o.descripcion,cantidad,o.precio_normal FROM dtl_pedido d, pedido p, producto o where d.cod_pedido=p.cod_pedido and p.tipo_comprobante like '"+tipoDoc+"' and d.tipoDoc like '"+tipoDoc+"' and p.cod_pedido="+codigoP+" and o.cod_producto like d.cod_producto ;");
        
        //Obtengo Filas-Arreglo de Titulos de Columnas
        int filas=conexion.obtenerFilas(respuesta);
        String[] titulosCol=conexion.obtenerColumnas(respuesta);
        
        //Creo la tabla:
        
        CrearTabla(filas,titulosCol);
        llenaTabla(respuesta,titulosCol.length,filas);
        //Para que no se cierre la ventana
        cb_cerrar.setSelected(true);
         }    
             
             
         }
         
         if(ventana.equals("Producto")){
         proPrin.txt_codigo.setText(tabla.getValueAt(tabla.getSelectedRow(),0).toString());    
         proPrin.limpiar();
         proPrin.muestraProducto();
         }
         if(ventana.equals("Combos1")){
         combPrin.txt_cod2.setText(tabla.getValueAt(tabla.getSelectedRow(),0).toString()); 
         combPrin.txt_nom2.setText(tabla.getValueAt(tabla.getSelectedRow(),2).toString());
         combPrin.txt_preci2.setText(tabla.getValueAt(tabla.getSelectedRow(),5).toString());
         combPrin.txt_cant.setEditable(true);
         //combPrin.muestraProducto();
         }
         if(ventana.equals("Combos2")){
         combPrin.txt_codigo.setText(tabla.getValueAt(tabla.getSelectedRow(),0).toString()); 
         combPrin.txt_nombre.setText(tabla.getValueAt(tabla.getSelectedRow(),2).toString());
         combPrin.txt_precio.setText(tabla.getValueAt(tabla.getSelectedRow(),5).toString());
         combPrin.llenoSegunCodigo(tabla.getValueAt(tabla.getSelectedRow(),0).toString());
         }
         if(ventana.equals("KardexInOut")){
         int filaDesocupada=kardexPrin.cuentaFilaOcupadas();

         if(kardexPrin.Etiqueta.getText().equals("Factura de Compras")){
         kardexPrin.tabla.setValueAt(tabla.getValueAt(tabla.getSelectedRow(),0),filaDesocupada,0);
         //Le Selecciono al Ultimo producto si es que no se repite en la factura:
             if ( kardexPrin.siExisteCodigo(tabla.getValueAt(tabla.getSelectedRow(), 0), filaDesocupada) >= 0) {
             }else {
             kardexPrin.tabla.clearSelection();
             //Le selecciono y enfoco el nuevo producto:
             kardexPrin.tabla.addRowSelectionInterval(filaDesocupada,filaDesocupada);
             // scroll to the editing field
             kardexPrin.tabla.scrollRectToVisible(tabla.getCellRect(filaDesocupada, 1, true));
             }
         }else{
         if(cantidadProd>0){
            filaDesocupada=kardexPrin.cuentaFilaOcupadas();
            kardexPrin.tabla.setValueAt(tabla.getValueAt(tabla.getSelectedRow(),0),filaDesocupada,0);
            //Le Selecciono al Ultimo producto si es que no se repite en la factura:
             if ( kardexPrin.siExisteCodigo(tabla.getValueAt(tabla.getSelectedRow(), 0), filaDesocupada) >= 0) {
             }else {
             kardexPrin.tabla.clearSelection();
             //Le selecciono y enfoco el nuevo producto:
             kardexPrin.tabla.addRowSelectionInterval(filaDesocupada,filaDesocupada);
             // scroll to the editing field
             kardexPrin.tabla.scrollRectToVisible(tabla.getCellRect(filaDesocupada, 1, true));
             }
            }else{
            JOptionPane.showMessageDialog(this,"No existe este Producto en Stock","Informacion",JOptionPane.INFORMATION_MESSAGE);
            }
         }
         
            
        }
         
         if(ventana.equals("ReportesProductos")){
            repPro.txt_codigo.setText(tabla.getValueAt(tabla.getSelectedRow(),0).toString());
            repPro.txt_cod2.setText(tabla.getValueAt(tabla.getSelectedRow(),0).toString());
            repPro.txt_precio.setText(tabla.getValueAt(tabla.getSelectedRow(),5).toString());
         }
         
         if(ventana.equals("Historia_Prod")){
         hisProPrin.txt_code.setText(tabla.getValueAt(tabla.getSelectedRow(),0).toString());
         hisProPrin.txt_nom.setText(tabla.getValueAt(tabla.getSelectedRow(),2).toString());
         int categoria=Integer.parseInt(tabla.getValueAt(tabla.getSelectedRow(),1).toString())-1;
         hisProPrin.cb_categoria.setSelectedIndex(categoria);
         hisProPrin.muestraResultados();
        }
         
        if(ventana.equals("ProductosInventario")){
         pInvPrin.txt_buscar.setText(tabla.getValueAt(tabla.getSelectedRow(),0).toString());
         pInvPrin.buscarP();
         pInvPrin.modificarP();
        } 
         
        //cierro ventana de busqueda: 
        if(!cb_cerrar.isSelected()&&!ventana.equals("ProductosInventario") ){
        dispose();
        }
         
    }
       
public String[] separaOraciones(String oracionEnt){

    oracionEnt=oracionEnt+"'";
     
     boolean b1=false;
     boolean b2=false;
      int p1=0;
      int p2=0;
     boolean oracion=false;
     
     int ban1=0;
     int ban2=0;
     
     String[] vectorNormal=new String[20];
     String[] vectorOracion=new String[20];
     
     int numeroCor=0;
     System.out.println(oracionEnt);
     for(int i=0;i<oracionEnt.length();i++){
     p2++;
         String caracter=String.valueOf(oracionEnt.charAt(i)); 
         if(caracter.equals("'"))
         {
        
          if(b1){
                 b1=false;
                 b2=false;
                 numeroCor++;
             }else{
                 b1=true;
                 oracion=true;
                 
             }
             int pfin=p2-2;
             System.out.println("p1="+p1+" "+"p2="+pfin); 
              //Guardo en vectores:
             
             int pf=p2-1;
             if(!oracion){
             System.out.println("Guardo esta!!");
             vectorOracion[ban2]=oracionEnt.substring(p1,pf);
             ban2++;
             }else{
             vectorNormal[ban1]=oracionEnt.substring(p1,pf);
             ban1++;        
             }
             
             oracion=false;
             
             
              p1=p2;
              p2=p2; 
         }else{
         
         System.out.println("["+i+"]="+caracter+":");
         
         }
     
     }
     System.out.println("# Oraciones:"+numeroCor);
     
//     muestraVector(vectorOracion);
//     muestraVector(vectorNormal);
     
     java.util.Vector vector=new java.util.Vector();
     for(int i=0;i<vectorOracion.length;i++){
         try{
         if(vectorOracion[i].equals("") || vectorOracion[i]==null){}
         else{
             vector.add(vectorOracion[i]);
         }
         }catch(Exception e){}
     }
     
     for(int i=0;i<vectorNormal.length;i++){
     try{
         if(vectorNormal[i].equals("") || vectorNormal[i]==null){}
         else{
             String pal=vectorNormal[i];
             String[] palabras=pal.split(" ");
             for(int j=0;j<palabras.length;j++){
//             if(palabras[j].equals("") && palabras[j]==null){}
//             else{
                 
                 System.out.println("Guarda:"+palabras[j]+":");
             vector.add(palabras[j]);
//             }
             }
         }
     }catch(Exception e){}
         
         }
    
     
     String[] respuesta=new String[vector.size()];
     for(int i=0;i<respuesta.length;i++){
        respuesta[i]=vector.get(i).toString();
     }
     return(respuesta);
     
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JCheckBox cb_bodega;
    private javax.swing.JCheckBox cb_cantidad;
    private javax.swing.JComboBox cb_categoria;
    private javax.swing.JCheckBox cb_cerrar;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    public javax.swing.JTextField txt_buscar;
    private javax.swing.JLabel txt_numero;
    // End of variables declaration//GEN-END:variables
    
}
